﻿Imports Farmacia

Namespace Ventas


    Public Class frmOrden
        Public Property ComprobanteDetalle As New Farmacia.Entity.Ventas.ComprobanteDetalleCol
        Public Property ComprobanteCabecera As Farmacia.Entity.Ventas.Comprobante

        Private Sub frmOrden_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        End Sub

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            BuscarProductos()
        End Sub

        Public Sub BuscarProductos()
            Dim _ent As Farmacia.Entity.Ventas.ComprobanteDetalle
            Dim frm As New Producto.frmProductoSeleccionarPopup
            frm.TextoBuscar = Me.txtBuscar.Text
            If frm.ShowDialog = Windows.Forms.DialogResult.OK Then
                _ent = frm.Producto

                Dim frmDEtalle As New FrmOrdenProductoConfirmacion
                frmDEtalle.Producto = _ent
                If frmDEtalle.ShowDialog = Windows.Forms.DialogResult.OK Then
                    _ent = frmDEtalle.Producto
                    ComprobanteDetalle.Add(_ent)
                    ComprobanteCabecera.Total = ComprobanteCabecera.Total + _ent.Total
                    Me.dgw_minedu.DataSource = Nothing
                    Me.dgw_minedu.Refresh()
                    Me.dgw_minedu.DataSource = ComprobanteDetalle

                    Me.txt_total.Text = ComprobanteCabecera.Total
                End If


            End If
        End Sub

        Private Sub txtBuscar_KeyDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles txtBuscar.KeyDown
            If e.KeyCode = Keys.Enter Then
                BuscarProductos()
            End If
        End Sub

        Private Sub frmOrden_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
            Vichama.Configurations.Data.ConexionWeb = True
            Vichama.Configurations.Data.ConexionIni = "Data Source=.\sql2k5;Initial Catalog=db_farmacia;User Id=sa;Password=sql2k;"

            '     Me.dgw_minedu.DataSource = Productos
            ComprobanteCabecera = New Entity.Ventas.Comprobante

        End Sub

        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Cancelar.Click
            Me.DialogResult = Windows.Forms.DialogResult.Cancel
            Me.Close()
        End Sub


        Public Function GenerarOrden() As Boolean
            Dim _bol As Boolean = False

            Dim _intComprobante As Integer = -1


            'validaciones
            If ComprobanteCabecera Is Nothing Then
                Return False
            End If
            If ComprobanteDetalle Is Nothing Then
                Return False
            End If
            If ComprobanteDetalle.Count < 0 Then
                Return False
            End If

            'registra cabezera

            Dim obj As New Farmacia.Business.Ventas.Comprobante
            _intComprobante = obj.Grabar(-1, _
                                         ComprobanteCabecera.Codigo, _
                                          ComprobanteCabecera.Fecha, _
                                          ComprobanteCabecera.ClienteId, _
                                          ComprobanteCabecera.ClienteObs, _
                                          ComprobanteCabecera.TipoId,
                                          ComprobanteCabecera.Serie, _
                                          ComprobanteCabecera.Nro, _
                                          ComprobanteCabecera.PagoTipoId, _
                                          ComprobanteCabecera.SubTotal, _
                                          ComprobanteCabecera.TotalDescuento, _
                                          ComprobanteCabecera.IGv, _
                                           ComprobanteCabecera.Redondeo, _
                                            ComprobanteCabecera.Total, _
                                            ComprobanteDetalle.Count, _
                                            ComprobanteCabecera.Estado, _
                                            Vichama.Configurations.Usuario.Codigo)

            ComprobanteCabecera.ComprobanteId = _intComprobante

            If ComprobanteCabecera.ComprobanteId <= 0 Then

                Vichama.Configurations.Aplication.MessageBox.MensajeError("Hubo un problema en el registro de la Orden")
                Return False

            End If

            'registramos detalle
            Dim objDetalle As New Farmacia.Business.Ventas.ComprobanteDetalle
            For Each detalle As Farmacia.Entity.Ventas.ComprobanteDetalle In ComprobanteDetalle

                Dim _intComprobanteDetalle As Integer = 0
                _intComprobanteDetalle = objDetalle.Grabar(-1, _
                                  _intComprobante, _
                                  detalle.ProductoId, _
                                  detalle.Cantidad, _
                                  detalle.StockBase, _
                                  detalle.StockDespues, _
                                  detalle.PrecioBase, _
                                  detalle.Precio, _
                                  detalle.DescuentoID, _
                                  detalle.Descuento, _
                                  detalle.Estado, _
                                  detalle.SubTotal, _
                                  detalle.Total, _
                                  Vichama.Configurations.Usuario.Codigo)


                'verificamos que este correctamente registrado
                If _intComprobanteDetalle <= 0 Then
                    Vichama.Configurations.Aplication.MessageBox.MensajeError("Hubo un problema en el registro de los productos " & detalle.ProductoId.ToString)
                    Return False
                End If

            Next

            _bol = True
            'verificamos
            'cantidad de items registrados y devolver el codigo

            Dim _str As String = obj.ValidarRegistroDetalle(ComprobanteCabecera.ComprobanteId, ComprobanteDetalle.Count, ComprobanteCabecera.Total)





            Return _bol
        End Function


        Private Sub Btn_Emitir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Emitir.Click
            If Not GenerarOrden() Then
                Vichama.Configurations.Aplication.MessageBox.MensajeExclamation("No se ha podido registrar la Orden")


            End If

            Dim frm As New frmOrdenGenerarPopup
            frm.vComprobanteCabecera = ComprobanteCabecera
            frm.vComprobanteDetalle = ComprobanteDetalle
            Select Case frm.ShowDialog()
                Case Windows.Forms.DialogResult.Cancel
                    'modificar

                Case Windows.Forms.DialogResult.Yes
                    'abre el form caja
                    Dim fcaja As New frmCaja
                    fcaja.MdiParent = Me.MdiParent
                    fcaja.ComprobanteDetalle = ComprobanteDetalle
                    fcaja.ComprobanteCabecera = ComprobanteCabecera
                    Me.Hide()
                    fcaja.Show()
                    Me.Close()
                Case Windows.Forms.DialogResult.Retry
                    'regresa y se mantiene los temporales
                    Me.ComprobanteDetalle = New Farmacia.Entity.Ventas.ComprobanteDetalleCol
                    Me.txtBuscar.Text = ""

            End Select

        End Sub
    End Class


End Namespace